<?php
class Text {
	
	protected $dict;
	public $lis;
	
	public function __construct() {
		$this->dict = array();
		$this->lis = array("ABC");
	} 
	
	public function set($val, $key=null){
		if ($key==null){
			$this->dict[] = $val;
		}else{			
			$this->dict[$key] = $val;
		}
	}
	
	public static function showthis ($toshow){
		if (is_array($toshow)){
			foreach ($toshow as $k=>$v){
				echo $k."=>".$v;
			}
		} else {
			echo "Das ist kein Array(): ".$toshow;
		}
		echo "<br />\n";		
	} 
	
	public function show() {
		foreach ($this->dict as $k=>$v){
			if (is_array($v)){
				echo $k.'=>{';
				foreach ($v as $kk=>$vv){
					echo $kk.'=>'.$vv;
				}
				echo '}';
			}else{				
				echo $k."=>".$v;
			}
		}
		echo "<br />\n";
	}
	
	# versuch eine nicht oeffentliche oder nicht existierende property zu holen
	public function __get($propertyname){
		if ($propertyname=='d'){
			return $this->dict;
		}else{
			echo "Diese Property gibt es nicht: ".$propertyname."<br />\n";
			return $propertyname;
		}
	}
	
	# zum Abfangen von zuweisungen an Member die es nicht gibt oder die nicht oeffentlich sind
	public function __set($propertyname, $value){
		if ($propertyname == 'd')
		{
			$this->dict = $value;
		} else {	
			echo "die Property kenn ich nich will ich nicht: ".$propertyname."<br />\n";
		}		
	}
}

$t = new Text();
$t->set('1', 'eins');
$t->set("H", "A");
$t->set('b');
$t->show();
$t->d = array("test", 3=>"auch test", "note"=>1, 4=>"vier", 1=>array(6=>1));
$t->show();
$t::showthis($t->lis);
$t::showthis($t->dict);